ЧАСТИНА 1. Функція prepare_set
prepare_set<-function(file_name){
library(stringr)
library(tibble)
setwd("/Users/alinanastasyak/Desktop/пари 5 2/R")
df<-read.csv(file_name, skip = 1, header = TRUE, encoding="UTF-8", stringsAsFactors = FALSE)
colnames(df)[1]="Country"
for (i in (1:length(colnames(df)))){
if (str_detect(colnames(df)[i], "X01")){
colnames(df)[i]=str_replace(colnames(df)[i],"X01..","Gold")
}
if (str_detect(colnames(df)[i], "X02")){
colnames(df)[i]=str_replace(colnames(df)[i],"X02..","Silver")
}
if (str_detect(colnames(df)[i], "X03")){
colnames(df)[i]=str_replace(colnames(df)[i],"X03..","Bronze")
}
if (str_detect(colnames(df)[i], "X..")){
colnames(df)[i]=str_replace(colnames(df)[i],"X..","")
}
}
country=c()
ID_=c()
for (i in (1:length(df["Country"][[1]]))){
country[i]=str_split(df['Country'][[1]][i],"\\s+\\(.*",simplify = TRUE)[1,1]
ID_[i]=str_split(df['Country'][[1]][i],"\\(",n=2,simplify = TRUE)[1,2]
ID_[i]=substring(ID_[i],1,3)
}
df["Country"]=country
df2=add_column(df, ID_, .before = 1)
df2=head(df2,-1)
return (df2)
}
olympics <- prepare_set("olympics.csv")
olympics
Котра країна виграла найбільшу кількість золотих нагород на літніх іграх?
answer_one<-function(){
country_max=''
gold_max=0
for (i in (1:length(olympics['Country'][[1]]))){
if (olympics['Gold'][[1]][i]>gold_max) {
gold_max=olympics['Gold'][[1]][i]
country_max=olympics['Country'][[1]][i]}
}
return(country_max)
}
answer_one()
## [1] "United States"
Яка країна має найбільшу різницю між кількістю нагород на літніх та зимових іграх?
answer_two<-function(){
country_dif=''
dif=0
for (i in (1:length(olympics['Country'][[1]]))){
if (abs(olympics['Total'][[1]][i]-olympics['Total.1'][[1]][i])>dif) {
dif=abs(olympics['Total'][[1]][i]-olympics['Total.1'][[1]][i])
country_dif=olympics['Country'][[1]][i]
}
}
return(country_dif)
}
answer_two()
## [1] "United States"
В якій крайні найбільша різниця між літніми та зимовими золотими нагородами відносно до загальної кількості нагород (Summer Gold - Winter Gold) / Total Gold. Врахувати тільки країни які мають як мінімум по одній нагороді в літніх та зимових іграх.
answer_three<-function(){
country_dif2=''
dif=0
for (i in (1:length(olympics['Country'][[1]]))){
if ((olympics['Gold'][[1]][i]>=1) & (olympics['Gold.1'][[1]][i]>=1)){
if (abs((olympics['Gold'][[1]][i]-olympics['Gold.1'][[1]][i]))/olympics['Gold.2'][[1]][i]>dif){
dif=abs((olympics['Gold'][[1]][i]-olympics['Gold.1'][[1]][i]))/olympics['Gold.2'][[1]][i]
country_dif2=olympics['Country'][[1]][i]
}
}
}
return(country_dif2)
}
answer_three()
## [1] "Bulgaria"
Необхідно знайти кількість балів по кожній крайні. Бали рахуються наступним чином: Золота нагорода Gold.2 це три бали, срібна Silver.2 - 2 бали та бронзова Bronze.2 – 1 бал.
answer_four<-function(){
country_new=olympics['Country'][[1]]
Points=c()
for (i in (1:length(olympics['Country'][[1]]))){
Points[i]=olympics['Gold.2'][[1]][i]*3+olympics['Silver.2'][[1]][i]*2+olympics['Bronze.2'][[1]][i]*1
}
new_olimp<-data.frame(country_new,Points)
colnames(new_olimp)[1]='Country'
return(new_olimp)
}
answer_four()
ЧАСТИНА 2
census_df <- read.csv("census.csv", stringsAsFactors = FALSE)
census_df
В якому штаті (state) більше всього округів (county)?
answer_five<-function(){
big_state=''
max_county=0
countyy=1
for (i in (2:length(census_df['STNAME'][[1]]))){
if (census_df['STNAME'][[1]][i]==census_df['STNAME'][[1]][i-1]){countyy=countyy+1}
else {
if (max_county<countyy){
max_county=countyy
countyy=1
big_state=census_df['STNAME'][[1]][i-1]
}
}
}
return(big_state)
}
answer_five()
## [1] "Texas"
Якщо розглядати три найбільш населених округа (county) з кожного штату, які три найбільш населені штати (в порядку з більш до менш населеного)?
answer_six<-function(){
people1=c()
people2=c()
people3=c()
lists=c(people1,people2,people3)
ctyname=unique(census_df['STNAME'][[1]])
for (j in (1:length(ctyname))){
people1[j]=0
for (i in (1:length(census_df['STNAME'][[1]]))){
if (census_df['STNAME'][[1]][i]==ctyname[j]){
if (census_df['COUNTY'][[1]][i]!=0){
if (census_df['CENSUS2010POP'][[1]][i]>people1[j]){
people1[j]=census_df['CENSUS2010POP'][[1]][i]
}
}
}
}
}
for (j in (1:length(ctyname))){
people2[j]=0
for (i in (1:length(census_df['STNAME'][[1]]))){
if (census_df['STNAME'][[1]][i]==ctyname[j]){
if (census_df['COUNTY'][[1]][i]!=0){
if ((census_df['CENSUS2010POP'][[1]][i]>people2[j]) & (census_df['CENSUS2010POP'][[1]][i]<people1[j])){
people2[j]=census_df['CENSUS2010POP'][[1]][i]
}
}
}
}
}
for (j in (1:length(ctyname))){
people3[j]=0
for (i in (1:length(census_df['STNAME'][[1]]))){
if (census_df['STNAME'][[1]][i]==ctyname[j]){
if (census_df['COUNTY'][[1]][i]!=0){
if ((census_df['CENSUS2010POP'][[1]][i]>people3[j]) & (census_df['CENSUS2010POP'][[1]][i]<people1[j])& (census_df['CENSUS2010POP'][[1]][i]<people2[j])){
people3[j]=census_df['CENSUS2010POP'][[1]][i]
}
}
}
}
}
people=people1+people2+people3
df_100=data.frame(ctyname,people)
big_state=c('','','')
max1=c(0,0,0)
for (j in (1:length(big_state))){
for (i in (1:length(ctyname))){
if (df_100['people'][[1]][i]>max1[j]){
if (j==1){
max1[j]=df_100['people'][[1]][i]
big_state[j]=df_100['ctyname'][[1]][i]
}
if (j==2){
if (df_100['people'][[1]][i]<max1[j-1]){
max1[j]=df_100['people'][[1]][i]
big_state[j]=df_100['ctyname'][[1]][i]
}
}
if (j==3){
if (df_100['people'][[1]][i]<max1[j-1]&df_100['people'][[1]][i]<max1[j-2]){
max1[j]=df_100['people'][[1]][i]
big_state[j]=df_100['ctyname'][[1]][i]
}
}
}
}
}
return(big_state)
}
answer_six()
## [1] "California" "Texas" "Illinois"
Який округ (county) має найбільшу абсолютну зміну в населенні протягом періоду 2010-2015?
answer_seven<-function(){
var=c()
var_max=-1
for (i in (1:length(census_df['COUNTY'][[1]]))){
if (census_df['COUNTY'][[1]][i]!=0){
var=c()
k=1
for (m in (10:14)){
f=m+1
for (n in (f:15)){
var[k]=(census_df[[n]][i]-census_df[[m]][i])
k=k+1
}
}
if (var_max<max(var)){
county_name=census_df['CTYNAME'][[1]][i]
var_max=max(var)
var=c()
}
}
}
return(county_name)
#return(county)
}
answer_seven()
## [1] "Harris County"
В census_df США поділені на 4 регіони (колонка “REGION”). Напишіть функцію, яка знаходить округи (county), що належать регіонам 1 або 2, назва яких починається з “Washington” та POPESTIMATE2015 більше ніж POPESTIMATE2014.
answer_eight<-function(){
county_name=c()
st_name=c()
k=1
for (i in (1:length(census_df['REGION'][[1]]))){
if (census_df['REGION'][[1]][i]==1 || census_df['REGION'][[1]][i]==2){
if (str_detect(census_df['CTYNAME'][[1]][i], "Washington")){
if(census_df['POPESTIMATE2015'][[1]][i]>census_df['POPESTIMATE2014'][[1]][i]){
county_name[k]=census_df['CTYNAME'][[1]][i]
st_name[k]=census_df['STNAME'][[1]][i]
k=k+1
}
}
}
}
df_7<-data.frame(st_name,county_name)
colnames(df_7)[1]='STNAME'
colnames(df_7)[2]='CTYNAME'
return(df_7)
}
answer_eight()